package cn.akwangl.design.pattern.structural.decorator.v3;

/**
 * 装饰者模式.
 *
 * <p>
 * 　　抽象构件(AbstractPhone)角色：给出一个抽象接口，以规范准备接受附加责任的对象。<br/>
 * 　　具体构件(Phone)角色：定义一个将要接收附加责任的类。<br/>
 * 　　装饰(AbstractPhoneDecorator)角色：持有一个构件(Component)对象的实例，并定义一个与抽象构件接口一致的接口。<br/>
 * 　　具体装饰(PlayGamePhone和VideoPhone)角色：负责给构件对象 ”贴上“附加的责任。<br/>
 * </p>
 *
 * @author youyongkun
 * @date 2021/11/25 17:18
 */
public class Test {
    public static void main(String[] args) {
        AbstractPhone phone;
        phone = new Phone();
        phone = new PlayGamePhoneDecorator(phone);
        phone = new VideoPhoneDecorator(phone);

        phone.print();
    }
}
